package com.atguigu.contriller;

import com.atguigu.pojo.User;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 请求数据，在服务器端进行校验
 */
@RestController
@RequestMapping("validator")
public class ValidatorController {
    /**
     *  如果请求参数比较简单，建议采用if验证
     *
     *  请求参数是User对象，校验User对象的数据
     *  每个字段的数据，全部取出，每个都要校验，建议使用注解验证
     *
     *  @Validated注解： 对JavaBean对象进行校验的注解
     *  @Validated User user 可以对User对象中的字段数据进行校验'
     *
     *  验证的jar包中，有个接口 BindingResult，反应出验证的结果
     */
    @RequestMapping("validatorUser")
    public String validator(@Validated User user, BindingResult bindingResult){
        //BindingResult接口方法：返回是不是验证失败的字段
        boolean flag = bindingResult.hasFieldErrors();//有校验失败的字段，返回true
        if(flag){
            //获取验证失败的字段对象
            FieldError fieldError = bindingResult.getFieldError();
            //获取哪个字段出现的验证失败，获取字段的名字
            System.out.println("fieldError = " + fieldError.getField());
            String defaultMessage = fieldError.getDefaultMessage();
            //输出验证失败的消息
            System.out.println("defaultMessage = " + defaultMessage);
            return "sorry";
        }
        System.out.println("flag = " + flag);
        System.out.println("user = " + user);
        return "success";
    }
}
